iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0

PHP FIG

PHP Framework Interop Group 簡稱 PHO FIG, 一個 PHP 框架的社群組織, 提供一些建議的 PHP 標準規範 PSR (PHP Standard Recommendations), 主要有四個部分, AUTOLOADING, INTERFACES, HTTP, CODING STYLES, 關於AUTOLOADING 有PSR-4, INTERFACES 有 PSR-3, PSR-6, PSR-11, PSR-13, PSR-14, PSR-16, 關於 HTTP 有 PSR-7, PSR-15, PSR-17, PSR-18, 關於 CODING STYLES 有 PSR-1, PSR-12, 文件相關的關鍵字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL" 都按照 RFC 2119 解釋.

  • 必須 (MUST): 絕對, 嚴格遵守
  • 一定不可以 (MUST NOT): 禁止, 嚴令禁止
  • 應該 (SHOULD): 強烈建議這樣做, 但不強求
  • 不該 (SHOULD NOT): 強烈不建議這樣做, 但不強求
  • 可以 (MAY), 可選 (OPTIONAL): 可選的

PSR-4: Autoloader

描述了一個從檔案路徑到 autoloading class 的規範, 完整的類名型式為

\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
// 1. 必須 (MUST) 有上層 namespace 名稱, 也是一般所知的 vender namespace
// 2. 可以 (MAY) 有一個或多個的 SubNamespace
// 3. 必須 (MUST) 有一個最終類名
// 4. 底線符號在完整類名中沒有任何特殊意義
// 5. 可以任意大小寫字母組合
// 6. 所有類名引用必須 (MUST) 區分大小寫 

加載檔案與完整類名的對應關係

  1. 在完整類名中, 一個或多個前導 namespace 和 sub-namespace, 不包括前導 namespace 的分隔符, 至少對應一個根目錄.
  2. 命名空間前綴後面的子命名空間與根目錄下的目錄名稱必須 (MUST) 匹配, 其中命名空間分隔符為目錄分隔符
  3. 最終類名對應到 .php 結尾的檔案名稱必須 (MUST) 一致, 如果最終類名為 Car, 類所在的檔案名稱必須是 Car.php
  4. 自動加載實作禁止 (MUST NOT) 拋出異常, 禁止 (MUST NOT) 出現任何級別錯誤, 不建議 (SHOULD NOT) 有返回值

PSR-1: Basic Coding Standard

基本代碼規範

  • 檔案必須 (MUST) 以 <?php 或 <?= 標籤開始
  • 檔案必須 (MUST) 使用不含 BOM 的 UTF-8
  • 檔案應該 (SHOULD) 聲明標示符, 如類, 函數, 或變數等, 或造成 side effect, 如產生輸出, 更改設定等, 但不該 (SHOULD NOT) 有聲明又造成 side effect
  • 命名空間以及類必須 (MUST) 符合 PSR-4
  • 類名必須 (MUST) 遵守 StudlyCaps 命名規則
  • 類中常數必須 (MUST) 大寫字母命名並使用底線分隔
  • 方法命名必須 (MUST) 遵守 camelCase

上一篇
來認識 PHP 與 Laravel
下一篇
PHP 基礎複習
系列文
PHP 與 Laravel 雜記14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言